package com.imooc.bilibili.user.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.imooc.bilibili.domain.user.User;
import com.imooc.bilibili.domain.user.UserInfo;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author gcq
 * @Create 2022-05-21
 */
public interface UserService extends IService<User> {

    List<User> getUserAll();

    /**
     * 保存用户
     *
     * @param user 用户信息
     */
    void addUser(User user);

    /**
     * 用户登录
     *
     * @param user 用户信息
     * @return token
     */
    String login(User user) throws Exception;

    /**
     * 获取用户信息
     *
     * @param currentUserId 当前用户Id
     * @return 用户信息
     */
    User getUserInfo(Long currentUserId);

    /**
     * 更新 userInfo 信息
     * @param userInfo userInfo
     */
    void updateUserInfos(UserInfo userInfo);

    /**
     * 根据 userIds 查询对应用户信息
     * @param userIds 用户 IdList
     * @return 结果
     */
    List<UserInfo> getUserInfoByUserIds(Set<Long> userIds);

    /**
     * 分页获取当前用户
     * @param jsonObject json
     * @return 结果
     */
    Page<UserInfo> pageListUserInfos(JSONObject jsonObject);

    /**
     * 登录双token
     *
     * @return 结果
     */
    Map<String, Object> loginForDts(User user) throws Exception;
}
